#include "../include/url.hpp"


std::shared_ptr<Url>& Urls::getUrl(std::string url,std::vector<std::string>& args){
    printf("[%s] ",__TIMESTAMP__);
    printf(" %s\n",url.c_str());
    for(auto t=urls.begin();t!=urls.end();t++){
        std::regex reg(t->first);
        std::cmatch m;
        bool ret=std::regex_match(url.c_str(),m,reg);
        for(int i=0;i<m.size();i++){
            args.emplace_back(m.str(i));
        }
        if(ret){
            return t->second;
        }
    }
    return urls[0].second;  // 至少必须有一个404 url。找不到匹配的url 即返回第一个
}


void Urls::url(std::string s,function fun){
    std::shared_ptr<Url> url(new Url(s,fun));
    urls.emplace_back(std::pair<std::string,std::shared_ptr<Url>>(s,url));   
}

Urls::Urls(){
    // printf("create url...\n");
}
Urls urls;